package com.example.springboot.service;

import com.example.springboot.entity.Story;

import java.util.List;

/**
 * 故事服务接口
 * 定义对故事数据的业务操作
 */
public interface StoryService {

    /**
     * 根据故事ID获取故事详情
     * 
     * @param storyId 故事ID
     * @return 故事对象，如果不存在则返回null
     */
    Story getStoryById(String storyId);

    /**
     * 根据用户ID获取该用户的所有故事
     * 
     * @param userId 用户ID
     * @return 故事列表
     */
    List<Story> getStoriesByUserId(Integer userId);

    /**
     * 保存故事（新增或更新）
     * 如果故事ID为空或不存在，则新增；否则更新
     * 
     * @param story 故事对象
     * @return 保存后的故事对象
     */
    Story saveStory(Story story);

    /**
     * 根据故事ID删除故事
     * 
     * @param storyId 故事ID
     * @return 是否删除成功
     */
    boolean deleteStory(String storyId);

    /**
     * 获取所有可分享的故事
     * 
     * @return 可分享的故事列表
     */
    List<Story> getSharableStories();

    /**
     * 根据故事分类获取故事
     * 
     * @param classification 故事分类
     * @return 故事列表
     */
    List<Story> getStoriesByClassification(Integer classification);

    /**
     * 根据标签搜索故事
     * 
     * @param tag 标签关键词
     * @return 匹配的故事列表
     */
    List<Story> searchStoriesByTag(String tag);

    /**
     * 生成新的故事ID
     * 
     * @return 新的故事ID
     */
    String generateStoryId();
}